范圍廣泛的企業工作負載和云原生應用程序使用 Docker 容器運行。因此,Docker 容器安全已成為云工作負載安全最重要的方面之一,保護 Docker 容器對于想要保持強大安全態勢的企業來說是必須的。在這里,我們將仔細研究這個流行的容器平臺、常見的 Docker 容器安全問題、最佳實踐以及專為提高現代企業的容器安全性而構建的工具。
什么是碼頭工人?
Docker 是一個容器平臺,它使開發人員和系統管理員能夠將應用程序及其所有依賴項打包到一個標準化的代碼單元中。Docker 容器允許企業在各種環境中將應用程序作為獨立進程運行,從超大規模云平臺到本地共享機器。由于該平臺的敏捷性、易用性和可擴展性,Docker 容器已成為現代云原生基礎設施的主要組成部分。
Docker 的工作原理
Docker 的工作原理是為企業提供一個標準平臺來運行代碼。它將給定應用程序所需的所有必需的二進制文件、庫和依賴項打包在一個不可變的容器映像中。
Docker 容器鏡像可以通過稱為 Dockerfiles 的文本文件創建。創建映像后,它們可以根據需要多次實例化,以在容器引擎(如 Docker Engine 或 Podman)之上運行工作負載作為 Docker 容器。因為它們輕量級、快速、易于實例化和高度可擴展,與在虛擬機或裸機服務器上運行的成熟操作系統相比,容器更適合許多 CI\CD 工作流和云原生微服務架構。
Docker 容器安全
Docker 的流行也使其成為攻擊者的高價值目標。正如將帶有 Monero 加密貨幣礦工的惡意容器鏡像發布到 Docker Hub 等公共容器注冊表等威脅以及Docker cp 漏洞 (CVE-2018-15664)等更細微的安全問題所證明的那樣,企業必須考慮整個常見 Docker 生態系統中的威脅以確保他們的容器安全。讓我們來看看運行 Docker 容器的企業面臨的一些最嚴重的容器安全威脅,以及可以幫助 DevSecOps 團隊緩解這些威脅的最佳實踐。
Docker 安全問題
根據 Docker 的說法,企業應該考慮四個主要方面的 Docker 安全審查。他們是:
- 內核安全
- Docker 守護進程攻擊面
- 配置挑戰
- 內核強化功能及其對 Docker 容器的影響
除了這些 Docker 安全考慮之外,企業還必須考慮其容器映像的來源、給定容器使用的庫和二進制文件、已知漏洞的修補程序,以及容器配置和通信的復雜性。
考慮到所有這些,企業在評估其安全狀況時需要考慮的一些最重要的 Docker 安全問題是:
- 不安全的容器鏡像:無論它們是配置錯誤還是完全惡意的,從存儲庫中提取和部署不安全的鏡像都可以立即降低企業安全狀況。一個典型的例子:對 Docker Hub 上 400 萬個公開可用容器的掃描發現6,000 個是惡意的,超過一半存在嚴重漏洞。
- 攻擊面:容器中開放的網絡端口、文件、庫和依賴項越多,攻擊面就越大。容器中未使用或不必要的組件不僅會增加膨脹,還會增加攻擊者的潛在入口點數量。
- 使用特權標志: privileged標志允許 Docker 容器以完全特權運行并繞過設備 cgroup 控制器中的限制。此標志的使用應僅限于一組非常狹窄的用例。
- 主機環境的安全性:容器引擎在其上運行的底層內核和主機操作系統中的漏洞可能會使企業工作負載面臨風險。如果企業控制了Docker宿主機環境,宿主機環境的加固和打補丁是必須的。
- 容器編排安全:Kubernetes (K8s) 等編排平臺使企業能夠有效地管理和部署容器。因此,K8s 安全是 Docker 容器安全的一個重要方面。
- 容器可見性:可見性是安全的一個基本方面。然而,傳統的監控和安全掃描工具并不總是能夠提供對容器工作負載的精細可見性。
Docker 安全最佳實踐
為了限制他們暴露于常見的 Docker 容器安全問題,企業可以遵循幾種 Docker 安全最佳實踐。除了有效的補丁管理和轉移安全性等基礎知識外,以下是一些最重要的內容:
- 遵循最小特權原則:安全策略和配置應確保容器和用戶只能執行他們完成工作所需的最少功能集。從戰術角度來看,這意味著企業應該采取以下步驟:實施細粒度的 IAM 策略、以無根模式運行容器、使用最少的基礎容器鏡像、鎖定網絡層并且不暴露 Docker 守護程序套接字、限制或限制使用–privileged標志,并盡可能使用只讀文件系統。
- 只運行受信任的容器:限制從 Docker 容器注冊表中提取的容器的使用僅限受信任和簽名(例如使用簽名標簽和 Docker 內容信任)圖像可以大大減少企業暴露于易受攻擊的容器圖像。
- 應用資源配額:資源配額限制 Docker 容器可以消耗的資源量(例如 CPU 和 RAM)。配置資源配額可以限制攻擊者在容器遭到破壞時消耗主機資源或影響其他服務的能力。
- 盡可能隔離容器:因為容器在 Linux 環境中作為進程運行,所以有多種可用的解決方案可以讓企業防止內核逃逸并提高容器之間的邏輯隔離。對于維護自己主機環境的企業,使用 AppArmor、cgroups、Linux 命名空間或 SELinux 等解決方案可以幫助保護 Docker 環境。
- 主動監控和掃描:跨CI\CD 管道的端到端掃描和主動監控使企業能夠快速檢測威脅、識別容器映像中的漏洞并快速修復問題。提供企業檢測 Docker 容器安全問題所需的精細可見性的工具是此最佳實踐的必要條件。